package com.ys.p1.doubleloop;

/**
 * @author CodeYang
 * @Description 生兔子问题: 也称经典的斐波拉契数列问题
 * 循环解决问题:
 *  6、[难]假如有一对小兔子，从出生后第3个月起每个月都生一对兔子，小兔子长到第三个月后每个月又生一对兔子，
 *  *    假如兔子都不死，请问每个月的兔子总数为多少对？（假设到24个月）
 *  * 思路分析：
 *  *        第1月   第2月   第3月   第4月   第5月   第6月   第7月
 *  * 小兔子   1       1      1       2       3
 *  * 老兔子   0       0      1       1       2
 *  * 总兔子   1       1      2       3       5      8      13
 *  *  规律：从第三月起，规律为：当前月兔子数 = 上个月兔子数 + 上上个月兔子数。
 *  *  注意：第一月和第二月的兔子总数都为常量1。
 *  *
 *  * 核心实现：第一月和第二月兔子总数都为1对，然后第三个月起的兔子总数遵循“斐波拉契”数列来计算。
 *  * 注意事项：从第三个月起，计算每个月的兔子总数，我们使用循环来实现。
 * @Date 2020/12/8 11:37
 */
public class DoubleLoopTest06 {
    public static void main(String[] args) {
        //如果该规律满足斐波拉契数列那么就满足一下规律:
       // F[n]=F[n-1]+F[n-2](n>=2,F[0]=0,F[1]=1)

        //定义 f(0)
        int f0 = 1;
        int f1 = 1;
        //有规律,会重复那么就可以使用循环,
        for (int i = 3; i <=24 ; i++) {
            int fn = f1+f0;
            System.out.println("第"+i+"个月的兔子总数为:"+fn);
            // f0 与 f1 要继续下去,在循环里就要改变其值, ra f2=f1 f3=f2
            f0=f1;
            f1=fn;


        }
    }
}
